/*
 * @Description: 盘查任务 类型声明
 * @Author: chenju
 * @Date: 2022-03-22 15:19:29
 * @LastEditors: qingyang
 * @LastEditTime: 2023-03-03 15:42:40
 */
import { AccountStatusEnum, CarbonInventoryStandardsMap } from '@/constants/enum';

/**
 * 任务列表 请求参数
 */
export interface GetTaskListParams {
  organizationCode?: string;
  inventoryYear?: string;
  accountStatus?: keyof typeof AccountStatusEnum;
  createTimeBegin?: string;
  createTimeEnd?: string;
}

// 任务列表 返回参数
export interface GetTaskListResult {
  // 任务主键id
  id: number;
  // 任务编号
  taskNo: string;
  // 盘查年份
  inventoryYear: string;
  // 组织名称
  organizationName: string;
  // 组织编码
  organizationCode: string;
  // 创建人
  creator: string;
  // 创建时间
  createTime: string;
  /**
   * 已核算数量
   */
  accountedNum: number;
  /**
   * 总数量
   */
  totalNum: number;
  /**
   * 核算状态
   */
  accountStatus: keyof typeof AccountStatusEnum;
}

// 查询任务详情 返回参数
export interface GetTaskInfoResult {
  // 任务编号
  taskNo: string;
  // 创建人
  creator: string;
  // 创建人邮箱
  creatorEmail: string;
  // 创建时间
  createTime: string;
  // 补充说明
  additionRemark: string;
  // 盘查年份
  inventoryYear: string;
  // 企业名称
  companyName: string;
  // 组织code
  organizationCode: string;
  // 组织名称
  organizationName: string;
  // 组织边界
  organizationBoundary: string;
  /**
   * 核算状态
   */
  accountStatus: keyof typeof AccountStatusEnum;
  /**
   * 核算标准 AccountStandardsType[]类型的string
   */
  accountStandards: string;
  boundaryType: 'SELF_FILL' | 'CHILD_FILL' | '';
}

/**
 * 任务详情页的子任务数据
 */
export interface TaskDetailChildTaskItem {
  taskNo: string;
  organizationCode: string;
  organizationName: string;
  /**
   *  总数据量
   */
  totalNum: number;
  /**
   *  已关联数据量
   */
  matchNum: number;
  /**
   *  核算标准 AccountStandardsType[]类型的string
   */
  accountStandards: string;
  /**
   *  核算状态
   */
  accountStatus: string;
  /**
   * 创建时间
   */
  createTime: string;
  /**
   * 核算时间
   */
  accountTime: string;
  /**
   * 是否是叶子节点
   */
  isLeaf: boolean;
  /**
   * 子任务列表
   */
  childTaskList: TaskDetailChildTaskItem[];
}

/**
 * 关联填报任务列表
 */
export interface GetTaskListMatchResult {
  /**
   * 填报任务编号
   */
  fillTaskNo: string;
  /**
   * 数据年
   */
  dataYear: string;
  /**
   * 数据月
   */
  dataMonth: string;
  /**
   * 组织名称
   */
  organizationName: string;
  /**
   * 任务下发时间
   */
  taskIssueTime: string;
  /**
   * 更新时间
   */
  updateTime: string;
  /**
   * 状态
   */
  status: string;
}

/**
 * 盘查任务创建/编辑 入参
 */
export interface PostTaskCreateParams {
  taskNo?: string;
  /**
   * 盘查周期
   */
  inventoryYear: string;
  /**
   * 组织code
   */
  organizationCode: string;
  /**
   * 组织名称
   */
  organizationName: string;
  /**
   * 组织边界
   */
  organizationBoundary: string[];
  /**
   * 补充说明
   */
  additionRemark?: string;
  /**
   * 组织边界类型
   */
  boundaryType: string;
}

/**
 * 获取年度组织树（获取年度组织树） 返回值
 */
export interface GetOrgTreeByInventoryYearResult {
  /**
   * 组织code
   */
  organizationCode: string;
  /**
   * 组织名称
   */
  organizationName: string;
  /**
   * 企业名称
   */
  companyName: string;
  /**
   * 是否叶子结点
   */
  isLeaf: boolean;
  /**
   * 层级
   */
  level: number;
  children: GetOrgTreeByInventoryYearResult[];
}

/**
 * 核算标准类型
 */
export interface AccountStandardsType {
  /**
   * 核算标准
   */
  standard: keyof typeof CarbonInventoryStandardsMap;
  /**
   * GWP版本
   */
  gwpVersion: string;
}

/**
 * 核算任务 入参
 */
export interface PostTaskAccountParams extends AccountStandardsType {
  taskNo: string;
}
